package com.yulan.bankback.service.bank;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;


public interface RedisService {

    String get(String key);

    List<String> multiGet(List<String> keys);

    void expire(String key, long ttl, TimeUnit timeUnit);

    void set(String key, String value, long ttl, TimeUnit timeUnit);

    void set(String key, String value);

    void del(String key);

    /**
     * Set: val是否是key的元素
     *
     * @param key
     * @param val
     * @return
     */
    boolean sIsMember(String key, String val);

    /**
     * Set: 将val添加到Set集合set中
     *
     * @param set
     * @param val
     */
    void sadd(String set, String val);

    /**
     * Set: 将val从Set集合中移除
     *
     * @param set 集合key
     * @param val 待移除的value
     */
    void srem(String set, String val);

    /**
     * Set: 获取Set集合所有元素
     * @param set 集合key
     * @return 所有元素
     */
    Set<String> sMembers(String set);

    boolean setNx(String key, String value);

    long incrBy(String key, long num);

    /**
     * 获取一个key的值并且转换成long
     *
     * @param key 数值的key
     * @return 数值，如果key不存在或者对应值为空则返回0
     */
    long getLong(String key);

    void multiDel(Set<String> keys);

    void lpush(String key, String value);

    String rpop(String key);

    Long listSize(String key);

    /**
     * 设置hash
     * @param key
     * @param field
     * @param value
     * @param ttl
     * @param timeUnit
     */
    void hSet(String key, String field, String value, long ttl, TimeUnit timeUnit);


    /**
     * 根据key获取所有的hash
     * @param key
     * @return
     */
    Map<String, String> hGetAll(String key);

    String hGetByKey(String mapName, String key);

    Long hDelByKey(String mapName, String key);


    void hDel(String key, List<String> hashKeys);


    boolean hasKey(String key, String hashKey);



    Long ttl(String key);




}
